1. Field of the Invention
The present invention generally relates to the field of software development and to automated development tools and implementation strategies for the same. More particularly, the invention relates to systems and methods for the automated generation of software code and supporting documentation by creating and using leverageable requirements.
2. Description of the Related Art
Large scale software projects are plagued with problems that may be attributed directly to the fractious nature of both methodologies and platforms. These problems affect the projects' quality, development and implementation schedule, and ultimately, cost. Tools that are available to assist the development and implementation of software projects, such as requirements repositories, project planners, version controls, configuration management, defect workflow, and test managers, rarely “talk” to each other and require teams of personnel to configure, program, and maintain. Additionally, these tools can require multiple platforms to function, such as UNIX, mainframe, and/or Windows®, requiring an even larger support team. As the architecture grows, the interactions of the projects' various teams become extremely complex. Numerous project teams may be required, including for defect tracking, requirement traceability, release management, project planning, security access, and tool maintenance.
Accordingly, traditional software development and implementation is costly and time-consuming due to the enormous degree of human involvement in all phases of development and implementation. Typical phases of software development and implementation include: requirements gathering and analysis, system and software design and development, implementation, integration and testing, and operation and maintenance.
Broadly put, requirements gathering and analysis is the process of establishing what services are required and what constraints apply to the system's operation and development. In traditional requirements gathering and analysis, teams of analysts have a general understanding of what criteria need to be fulfilled for the software to be considered a success. These teams document business logic and business rules and simply what the system does with data. The requirements team also document customers' needs of the system including, for example, reports, raw data, uptime, production schedules. Unfortunately, these requirements can be filled with holes, inconsistencies, errors, and contradictions that are difficult to detect by a human being reading through hundreds or even thousands of pages of requirements. In some instances, requirements in large-scale projects span thousands of pages in multiple documents written by multiple teams in multiple formats. Moreover, the requirements typically are textual documents with illustrations, which require interpretation by the reader to subjectively determine functionality, scope, priority, and/or level of effort.
Additionally, differences in style of implementation of deliverables may lead to errors and higher maintenance costs. For example, differences in programming style among developers can sometimes cause interoperability issues, errors, inconsistent performance, and higher integration and maintenance costs. Moreover, since so many of the deliverables are customized for the actual implementation rather than generic, most of the deliverables cannot be leveraged for an alternative implementation, either when the initial system is out of date or its implementation is considered undesirable during implementation phase.
Therefore, there is a need for systems and methods for acquiring terms and attributes associated with the terms usable to gather, format, present, and validate data for creating parameter-based and leverageable requirements. There is also a need for systems and methods to generate parameter-based and leverageable requirements by gathering, formatting, and validating leverageable requirements based on the terms and the acquired attributes. There is a further need for systems and methods for automated generation of software code, design artifacts, test cases, requirements documentation, and supporting documentation by creating and using the generated parameter-based requirements.